package com.xxxx.portal.service.impl;

import com.github.qcloudsms.httpclient.HTTPException;
import com.xxxx.common.pojo.Admin;
import com.xxxx.common.pojo.AdminExample;
import com.xxxx.common.utils.MD5Util;
import com.xxxx.portal.mapper.AdminMapper;
import com.xxxx.portal.service.AdminService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.Date;
import java.util.List;

/**
 * @Author GP
 * @Date 2020/9/2 19:28
 */
@Component
public class AdminServiceImpl implements AdminService {

    @Resource
    private AdminMapper adminMapper;

    @Resource
    private RabbitTemplate rabbitTemplate;
    

    /**
     * 用户注册实现功能
     * 1、检查用户名，密码，手机号是否为空
     * 2、查询数据库中是否已存在相同的用户名
     * 3、将注册名、密码(加密)、手机号存入数据库中
     * 4、添加成功，使用RabbitMQ发送注册成功信息！
     *
     * @param admin 用户信息
     * @return
     */
    @Override
    public Boolean register(Admin admin) throws HTTPException, IOException {
        //1、检查用户名、密码、手机号是否为空
        if (StringUtils.isEmpty(admin.getUserName())) {
            System.out.println("用户名不能为空！");
            return false;
        }
        if (StringUtils.isEmpty(admin.getPassword())) {
            System.out.println("密码不能为空！");
            return false;
        }
        if (StringUtils.isEmpty(admin.getEmail())) {
            System.out.println("手机号不能为空！");
            return false;
        }
        //2、查询数据库中是否已存在相同的用户名
        AdminExample adminExample = new AdminExample();
        adminExample.createCriteria().andUserNameEqualTo(admin.getUserName());
        List<Admin> admins = adminMapper.selectByExample(adminExample);
        if (admins.size() > 0) {
            System.out.println("用户名已存在，请重新输入！");
            return false;
        }
        //3、将注册名、密码(加密)、手机号存入数据库中
        admin.setPassword(MD5Util.md5Encrypt32Upper(admin.getPassword()));
        admin.setAddTime((int) new Date().getTime());
        admin.setLastLogin((int) new Date().getTime());
        System.out.println(admin.toString());
        int i = adminMapper.insertSelective(admin);
        //判断数据库添加是否成功
        if (i < 1) {
            System.out.println("注册失败！");
            return false;
        }
        //4、数据据库添加成功，发送短信
//        int result = sendSms.sendSms(admin.getEmail());
//        if (result == 0) {
//            System.out.println("向手机号:" + admin.getEmail() + "发送短信成功");
//        }
        // 获取注册用户手机号
        String phoneNumber = admin.getEmail();
        // 通过RabbitMq发送短信
        rabbitTemplate.convertAndSend("sms_exchange", "test.sms", phoneNumber);

        return true;
    }
}
